package com.eastfair.projectcore.vo;

import cn.afterturn.easypoi.excel.annotation.Excel;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.eastfair.annotation.annotation.vo.VoInfo;
import com.eastfair.annotation.model.EchoVO;
import com.eastfair.core.base.entity.Entity;
import com.eastfair.vo.VoGroupClass;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import lombok.experimental.Accessors;

import javax.validation.constraints.Size;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import static com.baomidou.mybatisplus.annotation.SqlCondition.LIKE;
import static com.eastfair.core.utils.DateUtils.DEFAULT_DATE_TIME_FORMAT;


@Data
@ApiModel(value = "Exhibition", description = "展会")
public class ExhibitionVO implements Serializable {

    private static final long serialVersionUID = 1L;
    @TableField(exist = false)
    private Map<String, Object> echoMap = new HashMap<>();
    /**
     * 主键id
     */
    @ApiModelProperty(value = "主键id")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private Long id;
    /**
     * 项目id
     */
    @ApiModelProperty(value = "项目id")
    @TableField(value = "project_id")
    @Excel(name = "项目id")
    private Long projectId;

    /**
     * E展通ID
     */
    @ApiModelProperty(value = "E展通ID")
    @Size(max = 32, message = "E展通ID长度不能超过32")
    @TableField(value = "e_id", condition = LIKE)
    @Excel(name = "E展通ID")
    private String eId;

    /**
     * B展通ID
     */
    @ApiModelProperty(value = "B展通ID")
    @Size(max = 32, message = "B展通ID长度不能超过32")
    @TableField(value = "b_id", condition = LIKE)
    @Excel(name = "B展通ID")
    private String bId;

    /**
     * 展会名称
     */
    @ApiModelProperty(value = "展会名称")
    @Size(max = 255, message = "展会名称长度不能超过255")
    @TableField(value = "name", condition = LIKE)
    @Excel(name = "展会名称")
    private String name;

    /**
     * 展会名称（中文）
     */
    @ApiModelProperty(value = "展会名称（中文）")
    @Size(max = 255, message = "展会名称（中文）长度不能超过255")
    @TableField(value = "en_name", condition = LIKE)
    @Excel(name = "展会名称（中文）")
    private String enName;

    /**
     * 地址
     */
    @ApiModelProperty(value = "地址")
    @Size(max = 255, message = "地址长度不能超过255")
    @TableField(value = "address", condition = LIKE)
    @Excel(name = "地址")
    private String address;

    /**
     * 地址（中文）
     */
    @ApiModelProperty(value = "地址（中文）")
    @Size(max = 255, message = "地址（中文）长度不能超过255")
    @TableField(value = "en_address", condition = LIKE)
    @Excel(name = "地址（中文）")
    private String enAddress;

    /**
     * logo图片地址
     */
    @ApiModelProperty(value = "logo图片地址")
    @Size(max = 255, message = "logo图片地址长度不能超过255")
    @TableField(value = "logo_image", condition = LIKE)
    @Excel(name = "logo图片地址")
    private String logoImage;

    /**
     * 广告视频
     */
    @ApiModelProperty(value = "广告视频")
    @Size(max = 255, message = "广告视频长度不能超过255")
    @TableField(value = "adverts_video", condition = LIKE)
    @Excel(name = "广告视频")
    private String advertsVideo;

    /**
     * 广告视频图片
     */
    @ApiModelProperty(value = "广告视频图片")
    @Size(max = 255, message = "广告视频图片长度不能超过255")
    @TableField(value = "adverts_video_image", condition = LIKE)
    @Excel(name = "广告视频图片")
    private String advertsVideoImage;

    /**
     * 广告图片
     */
    @ApiModelProperty(value = "广告图片")
    @Size(max = 255, message = "广告图片长度不能超过255")
    @TableField(value = "adverts_image", condition = LIKE)
    @Excel(name = "广告图片")
    private String advertsImage;

    /**
     * 开始时间
     */
    @ApiModelProperty(value = "开始时间")
    @TableField(value = "start_time")
    @Excel(name = "开始时间", format = DEFAULT_DATE_TIME_FORMAT, width = 20)
    private LocalDateTime startTime;

    /**
     * 结束时间
     */
    @ApiModelProperty(value = "结束时间")
    @TableField(value = "end_time")
    @Excel(name = "结束时间", format = DEFAULT_DATE_TIME_FORMAT, width = 20)
    private LocalDateTime endTime;

    /**
     * 默认每个展商单场直播时长限制（分钟）
     */
    @ApiModelProperty(value = "默认每个展商单场直播时长限制（分钟）")
    @TableField(value = "live_length_single")
    @Excel(name = "默认每个展商单场直播时长限制（分钟）")
    private Integer liveLengthSingle;

    /**
     * 默认每个展商直播总时长限制（分钟）
     */
    @ApiModelProperty(value = "默认每个展商直播总时长限制（分钟）")
    @TableField(value = "live_length_total")
    @Excel(name = "默认每个展商直播总时长限制（分钟）")
    private Integer liveLengthTotal;

    /**
     * 是否生效(默认1：可用 0:不可用)
     */
    @ApiModelProperty(value = "是否生效(默认1：可用 0:不可用)")
    @TableField(value = "is_enable")
    @Excel(name = "是否生效(默认1：可用 0:不可用)", replace = {"是_true", "否_false", "_null"})
    private Boolean isEnable;

    /**
     * 是否删除(默认0：未删除 1:已删除)
     */
    @ApiModelProperty(value = "是否删除(默认0：未删除 1:已删除)")
    @TableField(value = "is_delete")
    @Excel(name = "是否删除(默认0：未删除 1:已删除)", replace = {"是_true", "否_false", "_null"})
    private Boolean isDelete;


    /**
     * 角色id集合
     */
    @ApiModelProperty(value = "角色id集合")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private List<Long> roleIds;




}
